/*
 * Licensed to the 南京汇海交通科技有限公司
 *
 * Copyright (c) 2025.
 * All rights reserved.
 *
 * 本软件属南京汇海交通科技有限公司所有，在未获得南京汇海交通科技有限公司正式授权情况下，任何企业和个人，不能获取、阅读、安装、传播本软件涉及的任何受知识产权保护的内容。
 */
package com.chframework.http.utility.constant;

import java.util.TreeMap;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * 是否批量返回字段说明
 */
public enum BatchReturnEnum {
    YES("Y", "返回部分结果，需根据上一次响应结果执行多次HTTP请求，才能获取全部结果"),
    NO("N", "返回全部结果");

    BatchReturnEnum(String code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    /**
     * 字段值
     */
    private String code;
    /**
     * HTTP响应结果描述
     */
    private String desc;

    public String getCode() {
        return code;
    }

    public String getDesc() {
        return desc;
    }

    /**
     * 唯一标识字段 与 enum-name的映射关系
     */
    private static TreeMap<String, String> keyValuePairs = new TreeMap<>();

    /**
     * 根据特定字段获取 具体的 枚举实例，其实，code也可以是不同枚举字段的组合，也可以是一个对象，只要求它们的组合是唯一的，能够映射唯一的一个枚举实例即可。
     */
    public static BatchReturnEnum get(String code) {
        if (keyValuePairs.size() <= 0) {
            keyValuePairs.putAll(Stream.of(BatchReturnEnum.values())
                    .collect(Collectors.toMap(
                            BatchReturnEnum::getCode,
                            BatchReturnEnum::name,
                            (oldValue, newValue) -> newValue,
                            TreeMap::new)
                    )
            );
        }
        return BatchReturnEnum.valueOf(keyValuePairs.get(code));
    }
}
